package es.gesfutbol.web;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.hibernate.criterion.Order;
import org.springframework.ui.ModelMap;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;

import es.gesfutbol.dao.IEquipDao;
import es.gesfutbol.dao.ILligaDao;
import es.gesfutbol.domini.implementacio.Lliga;

public class LligaController extends MultiActionController{

	private ILligaDao lligaDao; 
	private IEquipDao equipDao;
	
	
	public ILligaDao getLligaDao(){
		return lligaDao;
	}
	
	public void setLligaDao(ILligaDao lligaDao){
		this.lligaDao = lligaDao;
	}
	
	public IEquipDao getEquipDao() {
		return equipDao;
	}

	public void setEquipDao(IEquipDao equipDao) {
		this.equipDao = equipDao;
	}
	
	/**
	 * Mètode que inicialitza la pàgina de lligues i envia la llista
	 * de lligues actuals a la vista.
	 * 
	 * @param request
	 * @param response
	 * @return
	 * @throws Exception
	 */
	public ModelAndView init(HttpServletRequest request,
	HttpServletResponse response) throws Exception {

		List<Lliga> lligues = lligaDao.findAll( Order.asc("temporada") );
		
		Lliga nouLliga = new Lliga();
				
		ModelMap modelMap = new ModelMap();
		modelMap.addAttribute("llistatLligues", lligues);
		modelMap.put("lliga", nouLliga);
		return new ModelAndView("administracion/lligues", modelMap);
	}
	
	/**
	 * Mètode que obté de la request l'idLliga a modificar, el cerca
	 * i retorna els valors al formulari de lligues.
	 * 
	 * @param request
	 * @param response
	 * @return
	 */
	public ModelAndView viewUpdate(HttpServletRequest request,
			HttpServletResponse response){
		
		List<Lliga> lligues = lligaDao.findAll();
		
		Long idLliga = Long.parseLong(request.getParameter("idLliga"));
		Lliga lliga = lligaDao.findById(idLliga);
		
		ModelMap model = new ModelMap();
		model.addAttribute("llistatLligues", lligues);
		model.put("lliga", lliga);
		return new ModelAndView("administracion/lligues", model);
	}
	
	/**
	 * Mètode que elimina una lliga de la bbdd.
	 * 
	 * @param request
	 * @param response
	 * @return
	 */
	public ModelAndView delete(HttpServletRequest request,
			HttpServletResponse response){
		
		Long idLliga = Long.parseLong(request.getParameter("idLliga"));
		lligaDao.delete(idLliga);
		
		return new ModelAndView("redirect:init.htm");
	}
	
	/**
	 * Mètode que guarda els canvis tant de l'afegir com l'editar
	 * lliga.
	 * 
	 * @param request
	 * @param response
	 * @param equip
	 * @return
	 */
	public ModelAndView addOrUpdate(HttpServletRequest request,
			HttpServletResponse response, Lliga lliga){
		
		lligaDao.save(lliga);

		return new ModelAndView("redirect:init.htm");
	}


	
}
